Skip to main content

Erweitern eines Funktionsbausteins

Allgemein

Die Erweiterung eines Funktionsbausteins basiert auf dem Konzept der Vererbung in der objektorientierten Programmierung. Ein abgeleiteter Funktionsbaustein „erweitert“ zu diesem Zweck einen Basis-Funktionsbaustein und erhält dadurch die Eigenschaften des Basis-Funktionsbausteins zusätzlich zu seinen eigenen Eigenschaften.

Die Erweiterung eines Funktionsbausteins bedeutet:

  • Der abgeleitete Funktionsbaustein enthält alle Daten und Methoden, die vom Basis-Funktionsbaustein definiert sind. Eine Instanz des Basis-Funktionsbausteins können Sie in jedem Kontext verwenden, in dem CODESYS einen Funktionsbaustein vom Typ des Basis-Funktionsbausteins erwartet.

  • Der abgeleitete Funktionsbaustein darf die Methoden überschreiben, die Sie im Basis-Funktionsbaustein definiert haben. Das bedeutet: Der abgeleitete Funktionsbaustein kann eine Methode mit demselben Namen, denselben Eingängen und demselben Ausgang definieren, wie vom Basis-Funktionsbaustein definiert ist.

    Tipp: Für dieses Überschreiben der vom Basisbaustein geerbten Methoden, Aktionen, Eigenschaften, Transitionen erhalten Sie folgendermaßen Unterstützung. Wenn Sie eine Methode, Aktion etc. unterhalb des abgeleiteten Bausteins einfügen, erhalten Sie im Dialog Objekt hinzufügen eine Combobox mit einer Auswahl der im Basisbaustein verwendeten Methoden, Aktionen etc. und können diese übernehmen, um sie dann nur noch entsprechend anzupassen.

  • Der abgeleitete Funktionsbaustein darf keine Funktionsbaustein-Variable mit denselben Namen enthalten, wie Sie der Basis-Funktionsbaustein verwendet. Dies meldet der Compiler als Fehler.

    Einzige Ausnahme: Wenn Sie eine Variable im Basis-Funktionsbaustein als VAR_TEMP deklariert haben, dann darf der abgeleitete Funktionsbaustein eine Variable mit demselben Namen definieren. In diesem Fall kann der abgeleitete Funktionsbaustein auf die Variable des Basis-Funktionsbausteins nicht mehr zugreifen.

  • Sie können die Variablen und Methoden des Basis-Funktionsbausteins innerhalb des Gültigkeitsbereichs des abgeleiteten Funktionsbausteins durch die Verwendung des SUPER-Pointers direkt ansprechen.

Wichtig

Mehrfache Vererbung ist nicht erlaubt.

Ausnahme: Ein Funktionsbaustein kann mehrere Schnittstellen implementieren und eine Schnittestelle kann andere Schnittstellen erweitern.

Erweitern eines Basis-Funktionsbausteins durch einen neuen Funktionsbaustein

Voraussetzung: Das aktuell geöffnete Projekt besitzt einen Basis-Funktionsbaustein, zum Beispiel POU_1(FB), der durch einen neuen Funktionsbaustein erweitert werden soll.

  1. Selektieren Sie das Objekt Application im Gerätebaum und wählen Sie den Menübefehl Projekt → Objekt hinzufügen → POU.

    Der Dialog POU hinzufügen öffnet sich.

  2. Geben Sie einen Namen für den neuen Funktionsbaustein in das Eingabefeld Name ein, beispielsweise POU_Ex.

  3. Wählen Sie Funktionsbaustein.

  4. Wählen Sie Erweitert und klicken Sie auf die Schaltfläche _cds_icon_input_assistent.png.

  5. Wählen Sie in der Eingabehilfe aus der Kategorie Funktionsbausteine unter Application die POU(FB) aus, die als Basis-Funktionsbaustein dienen soll, zum Beispiel POU_1 und klicken Sie auf OK.

  6. Optional können Sie einen Zugriffsmodifizierer für den neuen Funktionsbaustein aus der Combobox auswählen.

  7. Wählen Sie aus der Combobox Implementierungsprache zum Beispiel Strukturierter Text(ST) aus.

  8. Klicken Sie auf Hinzufügen.

    CODESYS fügt den Funktionsbaustein POU_Ex in den Gerätebaum ein und der Editor öffnet sich. In der ersten Zeile steht:

    FUNCTION_BLOCK POU_Ex EXTENDS POU_1

    Der Funktionsbaustein POU_Ex erweitert den Basis-Funktionsbaustein POU_1.

Erweitern eines Basis-Funktionsbausteins durch einen bestehenden Funktionsbaustein

Voraussetzung: Das aktuell geöffnete Projekt besitzt einen Basis-Funktionsbaustein, beispielsweise POU_1(FB), und einen weiteren Funktionsbaustein, beispielsweise POU_Ex(FB). Der Funktionsbaustein POU_Ex(FB) soll auch die Eigenschaften des Basis-Funktionsbausteins erhalten. Das bedeutet: POU_Ex(FB) soll POU_1(FB) erweitern.

  1. Doppelklicken Sie im Gerätebaum auf den Funktionsbaustein POU_Ex(FB).

    Der Editor des Funktionsbausteins öffnet sich.

  2. Erweitern Sie den bestehenden Eintrag der obersten Zeile FUNCTION_BLOCK POU_Ex mit EXTENDS POU_1.

    Der Funktionsbaustein POU_Ex erweitert den Basis-Funktionsbaustein POU_1.

Für weitere Informationen siehe: Implementieren einer Schnittstelle und Erweitern einer Schnittstelle

Eingabeunterstützung beim Erzeugen von erbenden Bausteinen

Wenn Sie objektorientiert programmieren und die Vererbung (Schlüsselwort EXTENDS) von Bausteinen nutzen, können Sie folgendermaßen Unterstützung erhalten:

Wenn Sie unterhalb eines von einem Basisbaustein abgeleiteten Bausteins eine Aktion, Eigenschaft, Methode oder Transition einfügen, öffnet sich der Dialog … hinzufügen. Dort ist das Eingabefeld für den Namen erweitert zu einer Combobox. Die Auswahlliste der Combobox enthält eine gültige Auswahl aus den im Basisbaustein vorhandenen Aktionen, Eigenschaften, Methoden oder Transitionen. Nun können Sie beispielsweise eine Methode des Basisbausteins auf einfache Weise zunächst übernehmen, um sie dann entsprechend für die abgeleitete Funktion des Bausteins anzupassen.

Methoden und Eigenschaften mit dem Zugriffsmodifizierer PRIVATE erscheinen in dieser Auswahl nicht, da sie auch nicht vererbt werden. Methoden und Eigenschaften mit dem Zugriffsmodifizierer PUBLIC erhalten beim Übernehmen in den abgeleiteten Baustein automatisch ein leeres Zugriffsmodifiziererfeld, was funktional das Gleiche bedeutet.

Für weitere Informationen siehe: Eigenschaft, Methode, Transition, Aktion,

Beispiel 29. Beispiel
_cds_img_input_wizzard_for_blocks.png